package com.dyj.applet.domain.query;

import com.dyj.common.domain.query.BaseSubscriptionQuery;
import com.dyj.common.enums.SubscriptionAccessTokenTypeEnum;

import java.util.List;

public class AddAppSubscriptionTplQuery extends BaseSubscriptionQuery {

    /**
     * <p>ISV服务商应用ID</p> 选填
     */
    private String ISVClientKey;
    /**
     * <p>模板 id，通过<a href="https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/server/subscribe-notification/query-template-list" target="_blank" rel="nofollow" class="syl-link" elementtiming="element-timing">查询订阅消息模板库</a>获取。</p>
     */
    private Long template_id;
    /**
     * <p>自行组合的模板关键词列表，必须是所添加的模板下的关键词。至少要添加一个关键词且最多只能添加五个关键词</p>
     */
    private List<String> keyword_list;

    public String getISVClientKey() {
        return ISVClientKey;
    }

    public AddAppSubscriptionTplQuery setISVClientKey(String ISVClientKey) {
        this.ISVClientKey = ISVClientKey;
        return this;
    }

    public Long getTemplate_id() {
        return template_id;
    }

    public AddAppSubscriptionTplQuery setTemplate_id(Long template_id) {
        this.template_id = template_id;
        return this;
    }

    public List<String> getKeyword_list() {
        return keyword_list;
    }

    public AddAppSubscriptionTplQuery setKeyword_list(List<String> keyword_list) {
        this.keyword_list = keyword_list;
        return this;
    }

    public static AddAppSubscriptionTplQueryBuilder builder() {
        return new AddAppSubscriptionTplQueryBuilder();
    }


    public static final class AddAppSubscriptionTplQueryBuilder {
        private String ISVClientKey;
        private Long template_id;
        private List<String> keyword_list;
        private SubscriptionAccessTokenTypeEnum accessTokenTypeEnum;
        private Integer tenantId;
        private String clientKey;

        private AddAppSubscriptionTplQueryBuilder() {
        }

        public static AddAppSubscriptionTplQueryBuilder anAddAppSubscriptionTplQuery() {
            return new AddAppSubscriptionTplQueryBuilder();
        }

        public AddAppSubscriptionTplQueryBuilder ISVClientKey(String ISVClientKey) {
            this.ISVClientKey = ISVClientKey;
            return this;
        }

        public AddAppSubscriptionTplQueryBuilder templateId(Long templateId) {
            this.template_id = templateId;
            return this;
        }

        public AddAppSubscriptionTplQueryBuilder keywordList(List<String> keywordList) {
            this.keyword_list = keywordList;
            return this;
        }

        public AddAppSubscriptionTplQueryBuilder accessTokenTypeEnum(SubscriptionAccessTokenTypeEnum accessTokenTypeEnum) {
            this.accessTokenTypeEnum = accessTokenTypeEnum;
            return this;
        }

        public AddAppSubscriptionTplQueryBuilder tenantId(Integer tenantId) {
            this.tenantId = tenantId;
            return this;
        }

        public AddAppSubscriptionTplQueryBuilder clientKey(String clientKey) {
            this.clientKey = clientKey;
            return this;
        }

        public AddAppSubscriptionTplQuery build() {
            AddAppSubscriptionTplQuery addAppSubscriptionTplQuery = new AddAppSubscriptionTplQuery();
            addAppSubscriptionTplQuery.setISVClientKey(ISVClientKey);
            addAppSubscriptionTplQuery.setTemplate_id(template_id);
            addAppSubscriptionTplQuery.setKeyword_list(keyword_list);
            addAppSubscriptionTplQuery.setAccessTokenTypeEnum(accessTokenTypeEnum);
            addAppSubscriptionTplQuery.setTenantId(tenantId);
            addAppSubscriptionTplQuery.setClientKey(clientKey);
            return addAppSubscriptionTplQuery;
        }
    }
}
